// 导入 node.js 中的 path 路径处理模块
const path = require('path')

// process.env.NODE_ENV
const env = process.env.NODE_ENV
const isProd = env === 'production' ? true : false

// 拼接并得到 cover.less 文件的绝对路径
const coverPath = path.join(__dirname, './src/cover.less')

// 需要进行 CDN 加速的包
const externalsObj = {
  // 需要排除的包名: 全局成员的变量名称
  'highlight.js': 'hljs',
  vue: 'Vue',
  'vue-router': 'VueRouter',
  vuex: 'Vuex',
  axios: 'axios',
  vant: 'vant',
  'socket.io-client': 'io',
  dayjs: 'dayjs',
  'bignumber.js': 'BigNumber'
}

module.exports = {
  css: {
    loaderOptions: {
      less: {
        modifyVars: {
          // 或者可以通过 less 文件覆盖（文件路径为绝对路径）
          hack: `true; @import "${coverPath}";`
        }
      }
    }
  },
  // 如果希望新增一些原本没有的配置，推荐使用 configureWebpack 节点
  configureWebpack: {
    // 配置 CDN 加速（配置排除项）
    externals: isProd ? externalsObj : {}
  },
  // 如果希望修改 vue-cli 中默认的 webpack 配置，推荐使用 chainWebpack 节点
  chainWebpack: config => {
    // config.plugin('要修改的插件的名字')
    config.plugin('html').tap(args => {
      const config = args[0]
      config.title = '黑马头条'

      // 为 html-webpack-plugin 插件挂载自定义属性
      config.isProd = isProd

      console.log(args)

      return args
    })
  }
}
